package pe.edu.claretiano.admisionmatricula.evaluacion.daoimpl;

import java.util.ArrayList;
import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.log4j.Logger;

import pe.edu.claretiano.admisionmatricula.bean.ParametroBusqueda;
import pe.edu.claretiano.admisionmatricula.bean.ProcesoAdmisionMatricula;
import pe.edu.claretiano.admisionmatricula.bean.CronogramaEvaluacion;
import pe.edu.claretiano.admisionmatricula.bean.SolicitudAdmision;
import pe.edu.claretiano.admisionmatricula.evaluacion.dao.CronogramaEvaluacionDao;
import pe.edu.claretiano.admisionmatricula.factory.MyBatisConnectionFactory;

public class CronogramaEvaluacionDaoImpl implements CronogramaEvaluacionDao {

	private final static Logger logCronogramaEvaluacionDaoImpl = Logger
			.getLogger(CronogramaEvaluacionDaoImpl.class);

	private SqlSessionFactory sqlSessionFactory;

	public CronogramaEvaluacionDaoImpl() {
		sqlSessionFactory = MyBatisConnectionFactory.getSqlSessionFactory();
	}

	@Override
	public List<CronogramaEvaluacion> listarCronogramaEvaluacion(
			CronogramaEvaluacion objCronogramaEvaluacion) {
		SqlSession session = sqlSessionFactory.openSession();
		List<CronogramaEvaluacion> lstSolicitud = new ArrayList<CronogramaEvaluacion>();
		try {
			lstSolicitud = (List<CronogramaEvaluacion>) session.selectList(
					"CronogramaEvaluacion.listarCronogramaEvaluacion", objCronogramaEvaluacion);
		} catch (Exception ex) {
			logCronogramaEvaluacionDaoImpl.error(ex.getMessage());
		} finally {
			session.close();
		}
		return lstSolicitud;
	}

	@Override
	public Integer insertarCronogramaEvaluacion(
			CronogramaEvaluacion objCronogramaEvaluacion) {
		SqlSession session = sqlSessionFactory.openSession();
		Integer resultado = 0;
		try {
			resultado = session.insert(
					"CronogramaEvaluacion.insertarCronogramaEvaluacion",
					objCronogramaEvaluacion);
			session.commit();
		} catch (Exception ex) {
			logCronogramaEvaluacionDaoImpl.error(ex.getMessage());
			session.rollback();
		} finally {
			session.close();
		}
		return resultado;
	}

	@Override
	public CronogramaEvaluacion obtenerCronogramaEvaluacion(
			CronogramaEvaluacion objCronogramaEvaluacion) {

		SqlSession session = sqlSessionFactory.openSession();
		CronogramaEvaluacion silicitud = null;
		try {
			silicitud = (CronogramaEvaluacion) session.selectOne(
					"CronogramaEvaluacion.obtenerCronogramaEvaluacion",
					objCronogramaEvaluacion);
		} catch (Exception ex) {
			logCronogramaEvaluacionDaoImpl.error(ex.getMessage());
		} finally {
			session.close();
		}

		return silicitud;

	}

	@Override
	public Integer actualizarCronogramaEvaluacion(
			CronogramaEvaluacion objCronogramaEvaluacion) {
		SqlSession session = sqlSessionFactory.openSession();
		Integer resultado = 0;
		try {
			resultado = session.update(
					"CronogramaEvaluacion.actualizarCronogramaEvaluacion",
					objCronogramaEvaluacion);
			session.commit();
		} catch (Exception ex) {
			logCronogramaEvaluacionDaoImpl.error(ex.getMessage());
			session.rollback();
		} finally {
			session.close();
		}
		return resultado;
	}

	@Override
	public Integer darDeBajaCronogramaEvaluacion(
			CronogramaEvaluacion objCronogramaEvaluacion) {

		SqlSession session = sqlSessionFactory.openSession();
		Integer resultado = 0;
		try {
			resultado = session.update(
					"CronogramaEvaluacion.darDeBajaCronogramaEvaluacion",
					objCronogramaEvaluacion);
			session.commit();
		} catch (Exception ex) {
			logCronogramaEvaluacionDaoImpl.error(ex.getMessage());
			session.rollback();
		} finally {
			session.close();
		}
		return resultado;
	}

	@Override
	public List<CronogramaEvaluacion> listarEvaluacion(
			CronogramaEvaluacion objCronogramaEvaluacion) {
		SqlSession session = sqlSessionFactory.openSession();
		List<CronogramaEvaluacion> lstSolicitud = new ArrayList<CronogramaEvaluacion>();
		try {
			lstSolicitud = (List<CronogramaEvaluacion>) session.selectList(
					"CronogramaEvaluacion.listarEvaluacion", objCronogramaEvaluacion);
		} catch (Exception ex) {
			logCronogramaEvaluacionDaoImpl.error(ex.getMessage());
		} finally {
			session.close();
		}
		return lstSolicitud;
	}

	@Override
	public Integer obtenerNroCronogramas(SolicitudAdmision objSolicitudAdmision) {
		SqlSession session = sqlSessionFactory.openSession();
		Integer resultado=0;
		try {
			resultado=(Integer)session.selectOne("CronogramaEvaluacion.obtenerNroCronogramas", objSolicitudAdmision);
		} catch (Exception ex) {
			logCronogramaEvaluacionDaoImpl.error(ex.getMessage());
		} finally {
			session.close();
		}
		return resultado;
	}

	@Override
	public Integer obtenerNroCronogramasxTipoEval(
			CronogramaEvaluacion objCronogramaEvaluacion) {
		SqlSession session = sqlSessionFactory.openSession();
		Integer resultado=0;
		try {
			resultado=(Integer)session.selectOne("CronogramaEvaluacion.obtenerNroCronogramasxTipoEval", objCronogramaEvaluacion);
		} catch (Exception ex) {
			logCronogramaEvaluacionDaoImpl.error(ex.getMessage());
		} finally {
			session.close();
		}
		return resultado;
	}

	@Override
	public Integer obtenerNroCronogramasIgualFecHor(
			CronogramaEvaluacion objCronogramaEvaluacion) {
		SqlSession session = sqlSessionFactory.openSession();
		Integer resultado=0;
		try {
			resultado=(Integer)session.selectOne("CronogramaEvaluacion.obtenerNroCronogramasIgualFecHor", objCronogramaEvaluacion);
		} catch (Exception ex) {
			logCronogramaEvaluacionDaoImpl.error(ex.getMessage());
		} finally {
			session.close();
		}
		return resultado;
	}

}
